Zmena stisknute klavesy v komponente
Otázka od: MJsoft
24. 11. 2002 23:55
Ahoj,
potreboval bych v komponente odchytit stisknutou klavesu a pokud se jedna
o sipku nahoru, tak aby to dale vypadalo jako SHIFT+TAB. Nevite jak toho
docilit. TAB me nedela problemy, delam to takto:
type
TDBJEdit = class(TDBEdit)
private
.
.
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
.
.
end;
procedure TDBJEdit.CNKeyDown(var Message: TWMKeyDown);
begin
if Message.CharCode=VK_UP then
Message.CharCode := VK_TAB;
inherited;
end;
Jenom nevim jak tam dostat ten SHIFT. Za pripadne odpovedi predem dekuji.
S pozdravem
Karel
---
Odchozí zpráva neobsahuje viry.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.422 / Virová báze: 237 - datum vydání: 20.11.2002
Odpovedá: Pavel ZIDEK
25. 11. 2002 4:26
Taky to jde takhle:
procedure TKDBEdit.KeyDown(var Key: Word; Shift: TShiftState);
var
FEditTemp : TCustomForm;
begin
if (Key = VK_DOWN) then
begin
FEditTemp := GetParentForm(Self);
SendMessage(FEditTemp.Handle, WM_NEXTDLGCTL, 0, 0);
{parametr '0' za WM_NEXTDLGCTL znamená FocusControll na následující}
Key := 0;
exit;
end;
if (Key = VK_UP) then
begin
FEditTemp := GetParentForm(Self);
SendMessage(FEditTemp.Handle, WM_NEXTDLGCTL, 1, 0);
{parametr '1' za WM_NEXTDLGCTL znamená FocusControll na předchozí}
Key := 0;
exit;
end;
inherited KeyDown(Key,Shift);
end;
POZOR na DBCtrlGrid, zde se pohyb pomoci sipek programuje jinak ... myslim
tim pohyb uvnitr DBCtrlGrid a to mzi jednotlivymi DBEdit
Jinak original najdes na http://www.kopr.cz/delphi,
----- Pavel ZIDEK -----
>
> potreboval bych v komponente odchytit stisknutou klavesu a pokud se
jedna
> o sipku nahoru, tak aby to dale vypadalo jako SHIFT+TAB. Nevite jak toho
> docilit. TAB me nedela problemy, delam to takto:
>